<?php

/**
 * 夏日葵电商系统
 * http://www.xiarikui.com
 */

namespace Xcx\Controller;

use JPush\Client as JPush;
use JPush\PushPayload as PushPayload;
use JPush\Exceptions\JPushException;

class TestController extends XcxBaseController {

    public $payment; //  具体的支付类
    public $pay_code; //  具体的支付code

    public function payTest() {
        header("Content-type: text/html; charset=utf-8");
        include_once "plugins/payment/weixin/MerchPay.class.php";
        $code = '\\MerchPay'; // \weixin
        $this->payment = new $code();
        $openid = 'o00NqwmCoJWA3go8PO6fjcHoYn9U';
        $trade_no = date('YmdHis') . mt_rand(1000, 9999);
        $res = $this->payment->pay($openid, $trade_no, 1, '提现');
//        $res = $this->payment->test();
        dump($res);
    }

    public function index() {
        $app_key = xrkCache('sms.jg_app_key');
        $master_secret = xrkCache('sms.jg_master_secret');
        $client = new JPush($app_key, $master_secret);
//        $orders = M('xcx_order')->where("order_id=65")->find();
        $alert = "test" . date('Y-m-d H:i:s');
//         $pusher->setNotificationAlert("test您有一条新的订单，订单号为：{$orders['order_sn']} ，请尽快确认！");
//        $pusher = $client->push();
//        $pusher->setPlatform('all');
//        $pusher->addAllAudience();
//        $jpush = new PushPayload();
//        $jpush->options(array('apns_production' => true));
////        $jpush->addRegistrationId(array('1507bfd3f7f76668958'));
////        $pusher->addRegistrationId(array('140fe1da9e9b74920a6'));
//        $orders = M('xcx_order')->where("order_id=65")->find();
//        $pusher->setNotificationAlert("test您有一条新的订单，订单号为：{$orders['order_sn']} ，请尽快确认！");
//        try {
//            $res = $pusher->send();
//            echo '<pre/>';
//            print_r($res);
//        } catch (JPushException $e) {
//            echo '<pre/>';
//            print_r($e);
//        }
        // 完整的推送示例
        // 这只是使用样例,不应该直接用于实际生产环境中 !!
        try {
            $response = $client->push()
                    ->setPlatform(array('ios', 'android'))
                    ->addAllAudience()
                    // 一般情况下，关于 audience 的设置只需要调用 addAlias、addTag、addTagAnd  或 addRegistrationId
                    // 这四个方法中的某一个即可，这里仅作为示例，当然全部调用也可以，多项 audience 调用表示其结果的交集
                    // 即是说一般情况下，下面三个方法和没有列出的 addTagAnd 一共四个，只适用一个便可满足大多数的场景需求
                    // ->addAlias('alias')
//                    ->addTag(array('tag1', 'tag2'))
                    // ->addRegistrationId($registration_id)
                    ->setNotificationAlert('Helle,珠海水果配送+')
                    ->iosNotification($alert, array(
//                        'sound' => 'sound.caf',
                        "sound" => "dd.mp3",
//                        // 'badge' => '+1',
//                        // 'content-available' => true,
//                        // 'mutable-content' => true,
//                        'category' => 'jiguang',
//                        'extras' => array(
//                            'key' => 'value',
//                            'jiguang'
//                        ),
                    ))
                    ->androidNotification($alert, array(
//                        'title' => 'hello jpush',
//                        // 'builder_id' => 2,
//                        'extras' => array(
//                            'key' => 'value',
//                            'jiguang'
//                        ),
                    ))
                    ->message($alert, array(
//                        'title' => 'hello jpush',
//                        // 'content_type' => 'text',
//                        'extras' => array(
//                            'key' => 'value',
//                            'jiguang'
//                        ),
                    ))
                    ->options(array(
                        // sendno: 表示推送序号，纯粹用来作为 API 调用标识，
                        // API 返回时被原样返回，以方便 API 调用方匹配请求与返回
                        // 这里设置为 100 仅作为示例
                        // 'sendno' => 100,
                        // time_to_live: 表示离线消息保留时长(秒)，
                        // 推送当前用户不在线时，为该用户保留多长时间的离线消息，以便其上线时再次推送。
                        // 默认 86400 （1 天），最长 10 天。设置为 0 表示不保留离线消息，只有推送当前在线的用户可以收到
                        // 这里设置为 1 仅作为示例
                        // 'time_to_live' => 1,
                        // apns_production: 表示APNs是否生产环境，
                        // True 表示推送生产环境，False 表示要推送开发环境；如果不指定则默认为推送生产环境

                        'apns_production' => true,
                            // big_push_duration: 表示定速推送时长(分钟)，又名缓慢推送，把原本尽可能快的推送速度，降低下来，
                            // 给定的 n 分钟内，均匀地向这次推送的目标用户推送。最大值为1400.未设置则不是定速推送
                            // 这里设置为 1 仅作为示例
                            // 'big_push_duration' => 1
                    ))
                    ->send();
            print_r($response);
        } catch (\JPush\Exceptions\APIConnectionException $e) {
            // try something here
            print $e;
        } catch (\JPush\Exceptions\APIRequestException $e) {
            // try something here
            print $e;
        }
    }

}
